package toolkit

import (
	"encoding/json"
	"io/ioutil"
	"os"
	"reflect"

	"gitee.com/segeln/grit/log"
)

//通用的解析Json文件转换为相应类的方法
func ParseJsonConfigFile(config string, conf interface{}) error {
	typ := reflect.TypeOf(conf)
	if typ.Kind() != reflect.Ptr {
		log.Errorln("parseJsonConfig conf is must pointer")
		return Error_PaseConfigFile
	}
	_, err := os.Stat(config)
	if err != nil && os.IsNotExist(err) {
		log.Errorln("PaseConfig faild msg:", err.Error())
		return Error_PaseConfigFile
	}
	f, err := os.Open(config)
	if err != nil {
		log.Errorln("PaseConfig Open faild msg:", err.Error())
		return Error_PaseConfigFile
	}

	buf, err := ioutil.ReadAll(f)
	if err != nil {
		log.Errorln("PaseConfig readAll faild msg:", err.Error())
		return Error_PaseConfigFile
	}

	err = json.Unmarshal(buf, conf)
	if err != nil {
		log.Errorln("PaseConfig Unmarsha config faild msg:", err.Error())
		return Error_PaseConfigFile
	}
	log.Infoln("PaseConfig Scuess!")
	return nil
}
